Computer systems are becoming increasingly pervasive in our society, including everything from small handheld electronic devices, such as personal data assistants and cellular phones, to application-specific electronic devices, such as set-top boxes, digital cameras, and other consumer electronics, to medium-sized mobile systems such as notebook, sub-notebook, and tablet computers, to desktop systems, workstations, and servers. Computer systems typically include one or more processors. A processor may manipulate and control the flow of data in a computer. To provide more powerful computer systems for consumers, processor designers strive to continually increase the operating speed of the processor. As processor speed increases, the power consumed by the processor tends to increase as well.
One approach to reducing overall power consumption of a computer system is to change the focus of power reduction from the processor to other devices that have a significant impact on power. These other devices may include, for example, a display, an input/output (I/O) device, a memory, etc. Typically, to reduce the power consumption of these devices, the operating system (OS) may be configured to detect the happenings or absence of certain events before reducing the power consumption of the devices. For example, the OS may indicate to a device driver that it is time to place a device into a standby state or any other low power states. The device driver may then issue commands to put the device into a low power state. This approach may not be efficient because it may take sometimes before an idle device receives the commands from the device driver. Techniques are being developed to make this process more efficient.